//
//  ViewController.m
//  21-NSURLRequestAndResponder
//
//  Created by dllo on 16/8/11.
//  Copyright © 2016年 ZHW. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    // NSURL 负责请求地址
    NSURL *baiduUrl = [NSURL URLWithString:@"http://www.baidu.com/user/wanghuang/1.html?userName=33.&pwd=122"];
    NSLog(@"%@", baiduUrl);
    // 完整的URL对应的字符串
    NSLog(@"absoluteString = %@", baiduUrl.absoluteString);
    // host 主机地址 / 域名
    NSLog(@"host = %@", baiduUrl.host);
    // path 主机地址后对应的路径
    NSLog(@"path = %@", baiduUrl.path);
    // query ? 以后的内容
    NSLog(@"query = %@", baiduUrl.query);
    // scheme URL所遵循的协议
    NSLog(@"scheme = %@", baiduUrl.scheme);
    // 除了协议的部分
    NSLog(@"%@", baiduUrl.resourceSpecifier);
    
    // 不可变请求和可变请求
    NSURLRequest *baiduRequest = [NSURLRequest requestWithURL:baiduUrl];
    // 不可变的属性都不能改
    
    // 一般处理网络请求 都使用可变请求~~~~~~
    NSMutableURLRequest *baiduMutableRequest = [NSMutableURLRequest requestWithURL:baiduUrl];
    // 超时时间 一个请求持续多久会失败
    baiduMutableRequest.timeoutInterval = 100;
    // HTTPMethod 请求的方式 GET POST PUT DELETE
    baiduMutableRequest.HTTPMethod = @"GET";
    // 设置网络请求头
    baiduMutableRequest.allHTTPHeaderFields = @{@"User-Agent" : @"iOS 10.0 / iPhone"};
    // 根据字典特性 相同key情况下 后执行的 会覆盖前面的值
    [baiduMutableRequest setValue:@"iOS 10.0 / iPhone" forHTTPHeaderField:@"User-Agent"];
    // HTTPBody (一般POST请求时 才会使用)
    // 一般情况下 都是字典/字符串转换成的Data
    baiduMutableRequest.HTTPBody = [NSData data];
    
    // NSURLResponse 响应
    NSHTTPURLResponse *response = [[NSHTTPURLResponse alloc] initWithURL:baiduUrl statusCode:200 HTTPVersion:@"HTTP/1.1" headerFields:@{@"date" : [NSDate date]}];
    // 1 statusCode 状态码
    response.statusCode;
    // 2 allHeaderFields 响应头
    // 内容格式 编码
    // 时间 日期
    // 缓存的一些内容
    NSLog(@"%@", response.allHeaderFields);
    
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end
